﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.Security;
using System.Data;


public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpCookie cookie = Request.Cookies[EClass.ECookie.ChkIdUser.ToString()];
        if(cookie != null)
        {
            String[] parts = cookie.Value.Split('~');
            _chkRemember.Checked = true;
            Session[EClass.ESession.IdUser.ToString()] = parts[0];
            Session[EClass.ESession.Admin.ToString()] = parts[1];
            string returnURL = null;
            if (Request.QueryString["ReturnURL"] != null)
            {
                returnURL = Request.QueryString["ReturnURL"];
                Response.Redirect(returnURL);
            }
            else
            {
                Response.Redirect("Homepage.aspx");
            }
        }
        else
        {
            if(Request.QueryString["action"] == null)
            {
                _multiView.ActiveViewIndex = 0;
                return;
            }
            return; // ko xu ly the
            if(Request.QueryString["action"].ToUpper() == EClass.EAction.Login.ToString().ToUpper())
            {
                _multiView.ActiveViewIndex = 0;
                Page.Title = "PSD Book Store - Đăng nhập";
            }
            if(Request.QueryString["action"].ToUpper() == EClass.EAction.ForgotPassword.ToString().ToUpper())
            {
                _multiView.ActiveViewIndex = 1;
                Page.Title = "PSD Book Store - Quên mật khẩu";
            }
        }
    }
    // get the forgot password
    protected void _btnOk1_Click(object sender, EventArgs e)
    {
        string username = _txtUsername2.Text;
        string newPassword = DBClass.CreateRandomString(6);
        string newPasswordMD5 = FormsAuthentication.HashPasswordForStoringInConfigFile(newPassword, "MD5");
        if (!_captChar.IsValid)
        {
            Response.Write("<script>alert('Mã xác nhận không chính xác')</script>");
        }
        else
        {
            string sql = "UPDATE users SET password='" + newPasswordMD5 + "' WHERE username='" + username + "'";
            int noc = DBClass.Execute(sql);
            if (noc > 0)
            {
                DataTable dt = DBClass.SelectData("SELECT email FROM users WHERE username='" + username + "'");
                if (dt.Rows[0]["Email"].ToString() == "")
                {
                    Response.Write("<script>alert('Bạn đã không khai báo địa chỉ email lúc đăng kí.Chúng tôi rất tiếc không thể lấy lại mật khẩu cho bạn')</script>");
                }
                else
                {
                    string to = dt.Rows[0]["Email"].ToString();
                    string emailSubject = "Yêu cầu lấy lại mật khẩu";
                    string emailContent = "Chúng tôi vừa nhận được một yêu cầu lấy lại mật khẩu từ phía bạn<br>";
                    emailContent += "Đây là mật khẩu mới của bạn: " + newPassword + "<br>";
                    emailContent += "Bạn có thể vào <a href='" + Request.Url.Authority + "/EditMember.aspx?action=" + EClass.EAction.PasswordChange.ToString() + "'>đây</a> để thay đổi mật khẩu ngay bây giờ";
                    bool res = DBClass.SendMailByGmail(to, emailSubject, emailContent);
                    if(res)
                        Response.Redirect("Message.aspx?action=" + EClass.EAction.ForgotPassword);
                    else
                        Response.Write("<script>alert('Không gởi được mail cấp mật khẩu mới')</script>");
                }
            }
        }
    }
    // login
    protected void _btnLogin_Click(object sender, EventArgs e)
    {
        string username = _txtUsername.Text;
        string password = FormsAuthentication.HashPasswordForStoringInConfigFile(_txtPassword.Text, "MD5");
        string strSQL = "SELECT * FROM users WHERE username = @Username AND password = @Password AND role = 1";
        SqlParameter[] parameters = {
                                        new SqlParameter("@Username", username), 
                                        new SqlParameter("@Password", password) 
            };
        DataTable dt = DBClass.SelectData(strSQL, parameters);
        if (dt.Rows.Count > 0)
        {
            if (dt.Rows[0]["active"].ToString().Trim().Equals("0"))
            {
                Response.Write("<script>alert('Bạn chưa vào mail kích hoạt để trở thành thành viên chính thức. Vui lòng vào mail để kích hoạt tài khoản') </script>");
            }
            else
            {
                if (_chkRemember.Checked)
                {
                    HttpCookie cookie = new HttpCookie(EClass.ECookie.ChkIdUser.ToString(), dt.Rows[0]["ID"] + "~" + username);
                    cookie.Expires = DateTime.Now.AddMinutes(5);
                    Response.Cookies.Add(cookie);
                }
                Session[EClass.ESession.IdUser.ToString()] = dt.Rows[0]["ID"];
                Session[EClass.ESession.Admin.ToString()] = username;

                string returnURL = "";
                if (Request.QueryString["ReturnURL"] != null)
                {
                    returnURL = Request.QueryString["ReturnURL"];
                    Response.Redirect(returnURL);
                }
                else
                {
                    Response.Redirect("Homepage.aspx");
                }
            }
        }
        else
        {
            Response.Write("<script>alert('Tên đăng nhập hoặc mật khẩu chưa đúng')</script>");
        }
    }
    protected void _btnLoginCancel_Click(object sender, EventArgs e)
    {
        Response.Redirect("Homepage.aspx");
    }
}
